www.gusucode.com > 基于Matlab的MIMO通信系统仿真源码程序 > code9/mimo/matlab for mimo 2x2/channel_estimation.m

    function H_hat = channel_estimation(trA_I, trA_Q, trB_I, trB_Q, tr_ant1_I, tr_ant1_Q , tr_ant2_I, tr_ant2_Q)
% Function channel_estimation
% By Maxime Maury
% 05-04-21
% Inputs:
%   trA:        training sequence received on antenna A
%   trB:        training sequence received on antenna B
%   tr_ant1:    training sequence sent on antenna 1
%   tr_ant2:    training sequence sent on antenna 2
% Output:
%   H_hat:      estimate of the 2x2 channel matrix


trainingA = trA_I + sqrt(-1)* trA_Q;
trainingB = trB_I + sqrt(-1)* trB_Q;

training_ant1 = tr_ant1_I + sqrt(-1)* tr_ant1_Q;
training_ant2 = tr_ant2_I + sqrt(-1)* tr_ant2_Q;

Y_r = [ trainingA ; trainingB ];
S =   [ training_ant1 ; training_ant2 ];
S_est = S'*inv(S*S');
H_hat = Y_r*S_est;
   
% plot( trA_I./max(trA_I) )
% hold on;
% plot(tr_ant1_I./max(tr_ant1_I),'r');